#include<bits/stdc++.h>

using namespace std;
typedef unsigned long long LL;

template<typename T>
inline void oo(string str, T val) { cerr << str << val << endl; }

template<typename T>
inline T read() {
    T x;
    cin >> x;
    return x;
}


template<typename T>
void OO(string s, T a) {
    cerr << s << ":";
    for (auto e:a)cerr << e << " ";
    cerr << endl;
}

struct GG {
    int x, y, z;

    GG(int x, int y, int z) : x(x), y(y), z(z) {

    }

    bool operator<(const GG &g) const {
        if (x != g.x)return x < g.x;
        if (y != g.y)return y < g.y;
        return z < g.z;
    }
};

void solve() {
    set<GG> G;
    for (int i = 1; i <= 20; i++)
        for (int j = i + 1; j <= 40; j++) {
            int x = 2 * i - 1, y = 2 * j - 1;
            if (__gcd(x, y) == 1) {
                int a[3] = {(x * x + y * y) / 2, x * y, (y * y - x * x) / 2};
                sort(a, a + 3);
                if (a[2] > 1000)continue;
                if (G.size() < 100)
                    G.insert(GG(a[0], a[1], a[2]));
            }
        }
    for (GG g:G)cout << g.x << " " << g.y << " " << g.z << endl;
}

int main() {
    solve();

    return 0;
}